import os
from typing import Dict, Any


class Settings:
    """
    应用配置类，用于集中管理所有应用程序配置项
    从环境变量读取配置值，如果环境变量不存在则使用默认值
    """
    # 数据库配置
    DATABASE_URL: str = os.getenv("DATABASE_URL", "sqlite:///./order_system.db")
    """数据库连接URL，默认使用SQLite数据库"""
    
    # 支付配置
    ALIPAY_APP_ID: str = os.getenv("ALIPAY_APP_ID", "")
    """支付宝应用ID"""
    ALIPAY_PRIVATE_KEY: str = os.getenv("ALIPAY_PRIVATE_KEY", "")
    """支付宝私钥，用于签名请求"""
    ALIPAY_PUBLIC_KEY: str = os.getenv("ALIPAY_PUBLIC_KEY", "")
    """支付宝公钥，用于验证响应"""
    
    WECHAT_APP_ID: str = os.getenv("WECHAT_APP_ID", "")
    """微信支付应用ID"""
    WECHAT_MCH_ID: str = os.getenv("WECHAT_MCH_ID", "")
    """微信支付商户号"""
    WECHAT_API_KEY: str = os.getenv("WECHAT_API_KEY", "")
    """微信支付API密钥"""
    
    # Shopify配置
    SHOPIFY_WEBHOOK_SECRET: str = os.getenv("SHOPIFY_WEBHOOK_SECRET", "")
    """Shopify webhook 密钥，用于验证webhook请求的真实性"""
    
    # Redis配置（用于异步任务）
    REDIS_URL: str = os.getenv("REDIS_URL", "redis://localhost:6379/0")
    """Redis连接URL，用于Celery异步任务队列"""
    
    # 生产厂商配置
    MANUFACTURER_API_ENDPOINTS: Dict[str, str] = {
        "default": os.getenv("MANUFACTURER_API_ENDPOINT", "https://api.manufacturer.com/v1")
    }
    """生产厂商API端点配置字典"""


# 创建全局配置实例
settings = Settings()